import os
import django

# 设置 Django 设置模块路径
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
django.setup()
from products.models import Category
from django.db import transaction

# 定义所有一级分类和对应的二级分类
category_structure = {
    'electronics': ['智能手机', '笔记本电脑', '平板电脑', '游戏主机', '电子词典', '智能手表', '智能音箱', '投影仪', '电子阅读器', '掌上游戏机'],
    'accessories': ['耳机', '移动电源', '数据线', '鼠标键盘', '充电头', '手机壳膜', 'U盘', '音响设备', '耳麦', '读卡器'],
    'academicBooks': ['公共课教材', '专业课课本', '考研资料', '四六级真题', '教辅讲义', '实验手册', '教师用书', '考博资料', '学术专著', '考公教材'],
    'generalBooks': ['小说文学', '杂志期刊', '外文原版', '绘本文集', '心理自助', '经管读物', '历史传记', '旅游攻略', '漫画绘本', '儿童读物'],
    'clothing': ['卫衣外套', '衬衫T恤', '运动服饰', '汉服汉元素', 'JK制服', '裙装', '牛仔裤', '睡衣家居服', '内衣', '配饰套装'],
    'shoesBags': ['运动鞋', '皮鞋', '拖鞋', '登山鞋', '休闲包', '双肩包', '钱包', '登机箱', '手提包', '邮差包'],
    'furniture': ['床架', '书桌', '衣柜', '椅凳', '沙发', '床上四件套', '窗帘', '地垫', '储物柜', '书架'],
    'appliances': ['电冰箱', '洗衣机', '空调', '电饭煲', '微波炉', '电风扇', '吹风机', '加湿器', '热水器', '吸尘器'],
    'sportsEquip': ['篮球', '羽毛球拍', '足球', '滑板', '羽毛球', '乒乓球拍', '网球拍', '橄榄球', '高尔夫球杆', '滑雪板'],
    'fitnessGear': ['哑铃', '引体向上杆', '健腹轮', '弹力带', '跳绳', '俯卧撑架', '战绳', '哑铃架', '拉力器', '健身手套'],
    'beautyCare': ['口红', '面膜', '防晒霜', '电动牙刷', '卸妆水', '洗面奶', '护手霜', '香水', '精华液', '洗发水'],
    'photography': ['单反相机', '微单相机', '镜头', '三脚架', '补光灯', '摄影灯', '相机包', '滤镜', '云台', '存储卡'],
    'musicInstruments': ['吉他', '电子琴', '小提琴', '鼓组', '笛子', '口琴', '萨克斯', '芦笙', '电子合成器', '手风琴'],
    'officeEquip': ['打印机', '扫描仪', '投影仪', '碎纸机', '订书机', '白板', '打孔机', '装订机', '点钞机', '电话机'],
    'stationery': ['笔记本', '荧光笔', '文件夹', '便利贴', '书签', '订书针', '修正带', '活动铅笔', '尺规套装', '便签本'],
    'toysGames': ['盲盒', '手办', '拼图', '拼装模型', '积木', '潮流玩具', '娃娃', '电子宠物', '模拟经营玩具', '桌游'],
    'petSupplies': ['猫粮', '狗粮', '猫砂', '宠物窝', '食盆', '猫抓板', '宠物背包', '遛狗绳', '宠物洗护品', '宠物玩具'],
    'travelGear': ['登山杖', '帐篷', '睡袋', '登山包', '保温杯', '便携餐具', '防潮垫', '旅行装洗漱', '急救包', '折叠椅'],
    'cooking': ['电煮锅', '电饭煲', '破壁机', '空气炸锅', '电热壶', '三明治机', '榨汁机', '厨房刀具', '烤盘', '厨房收纳'],
    'jewelry': ['项链', '耳环', '手链', '戒指', '发饰', '帽子', '围巾', '太阳镜', '手表', '指甲贴'],
    'artCrafts': ['油画颜料', '画笔', '画布', '黏土', '织布机', '刺绣工具', '手工纸', '陶艺工具', '彩色卡纸', '串珠'],
    'babyCare': ['婴儿车', '奶瓶', '奶粉', '尿不湿', '婴儿床', '吸奶器', '婴儿背带', '温奶器', '婴儿服饰', '婴儿玩具'],
    'ticketsVouchers': ['电影票', '演唱会票', '美食代金券', '外卖红包', '景点门票', '话费卡', '游戏点卡', '优惠券', '校园卡余额', '代取快递券'],
    'virtualAssets': ['游戏账号', '软件授权', '网课资源', '视频会员', '电子书', '数字藏品', '云盘空间', '虚拟货币', '社群权限', '在线课程'],
    'repairServices': ['手机维修', '电脑维修', '电器维修', '鞋类修补', '服装修改', '家具翻新', '家电清洗', '电子焊接', '机械维修', '锁具更换'],
    'knowledgeServices': ['论文降重', '作业辅导', '课程代刷', '考试押题', '语言陪练', '技能教学', '职业咨询', '留学指导', '考研规划', '软件培训'],
    'campusServices': ['代课服务', '考试代刷', '校园跑腿', '课程代抢', '作业代写', '论文润色', '宿舍代购', '校园导游', '社团招新', '活动策划'],
    'dailyNecessities': ['洗衣液', '垃圾袋', '纸巾', '洗洁精', '衣架', '收纳盒', '保鲜膜', '电池', '灯泡', '厨房纸巾'],
    'collectibles': ['纪念币', '邮票', '限量球鞋', '艺术版画', '稀有手办', '古董摆件', '珠宝玉石', '名人签名', '限量潮牌', '古籍善本'],
    'others': ['其他物品'] # 为"其他闲置"分类添加一个默认子分类
}

def create_all_categories():
    """创建所有一级和二级分类"""
    
    print("开始创建分类数据...")
    
    # 使用事务确保数据一致性
    with transaction.atomic():
        # 1. 确保所有根分类存在
        for root_name in category_structure.keys():
            root, created = Category.objects.get_or_create(
                name=root_name,
                is_root=True,
                defaults={'sort_order': 0}
            )
            status = "创建" if created else "已存在"
            print(f"{status}根分类: {root_name}, ID: {root.id}")
            
            # 2. 为每个根分类创建子分类
            for index, sub_name in enumerate(category_structure[root_name]):
                sub, created = Category.objects.get_or_create(
                    name=sub_name,
                    parent=root,
                    defaults={
                        'is_root': False,
                        'sort_order': index  # 使用索引作为排序顺序
                    }
                )
                status = "创建" if created else "已存在"
                print(f"  {status}子分类: {sub_name}, ID: {sub.id}")
    
    print("分类数据创建完成")

# 执行创建
if __name__ == "__main__":
    create_all_categories()
